home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / Apps / Clocks / clocks / Animator.h < prev    next >
Encoding:
Text File  |  1992-12-20  |  3.5 KB  |  104 lines

  1.  
  2. /* Not generated by Interface Builder */
  3.  
  4. /*
  5.  * This is an Animator class which is sort of different from the
  6.  * Animator found in the Stopwatch program.  It is a bit more standalone,
  7.  * as I wanted to be able to create objects which only animated if they
  8.  * were the target of an Animator, or if they had an Animator as an outlet.
  9.  * (The Animator class allows the Animator to be either an outlet, or to
  10.  * have a target, and animate in much the same way.)  See the accompanying
  11.  * documentation for more help (Animator.wn).
  12.  */
  13.  
  14. #import <objc/Object.h>
  15. #import <appkit/Application.h>
  16.  
  17. @interface Animator:Object
  18. {
  19.     id target;            // The thing we are animating.
  20.     DPSTimedEntry te;        // the timed entry we are using.
  21.     BOOL running;        // YES if we are running.
  22.     float timing;        // the current timing we are using.
  23.     float threshold;        // the threshold we are running at.
  24.     SEL action;            // message to send to target.
  25.     
  26.     double startTime;        // when we started.
  27.     double elapsed;        // time between current call and the original.
  28.     
  29.     BOOL continuous;        // Continuous, or one shot calling.
  30. }
  31.  
  32. + new;                // create a new Animator.
  33.  
  34. // These routines allow the user to set up the default values for Animator
  35. // objects.  Using these factory methods, a subclass may easily change the
  36. // Animator's actions by calling these methods in an initialize factory
  37. // method.
  38. + setDefaultTiming:(float)dtiming;
  39. + setDefaultThreshold:(float)dthreshold;
  40. + setDefaultAction:(SEL)daction;
  41. + setDefaultRunning:(BOOL)state;
  42. + setDefaultContinuous:(BOOL)state;
  43.  
  44. - free;                // free the Animator up.
  45.  
  46. // These routines set up the animator according to the user's desires.
  47. - setTarget:anObject;        // calls setAnimator if anObject implements.
  48. - target;
  49. - setTiming:(float)timing;
  50. -(float)timing;
  51. - setThreshold:(float)threshold;
  52. -(float)threshold;
  53. - setAction:(SEL)aSelector;
  54. -(SEL)action;
  55. - setRunning:(BOOL)state;
  56. -(BOOL)running;
  57. -(double)doubleValue;        // return the amount of time since last call.
  58. -(float)floatValue;        // return as a float.
  59. -(int)intValue;
  60. - resetValue:(double)value;    // reset the start time to value.
  61. - resetValue;            // reset start time to now.
  62. -(BOOL)continuous;        // return the continuous flag.
  63. - setContinuous:(BOOL)state;    // set the continuous flag.
  64.  
  65. // These both force non-continuous.
  66. - callAfter:(double)sec;    // wait and call me then.
  67. - callAt:(double)absSec;    // call at this time.
  68.                 // Time is given in seconds, since midnight.  If the
  69.                 // time given is before the current time, it waits
  70.                 // until the next day.  (ie, wraps around).
  71.  
  72. // sendAction:to: sends theAction with parameter self to theTarget.  If
  73. // theAction is NULL, or theTarget is nil, nothing is sent.  sendAction
  74. // sends the animator's action to its target.
  75. - sendAction:(SEL)theAction to:theTarget;
  76. - sendAction;
  77.  
  78. // These are to be hooked up to various user interface objects, such as
  79. // buttons and sliders.
  80. - start:sender;            // start the Animator.
  81. - stop:sender;            // stop the Animator.
  82. - toggleRun:sender;        // toggle the Animator's state.
  83. - takeTimingFrom:sender;    // to hook up a slider.
  84. - takeRunningFrom:sender;    // set state by sender.
  85. - takeContinuousFrom:sender;    // set continuous by sender.
  86.  
  87. // These routines are for reading and writing the animator.
  88. - copy;
  89. - awake;
  90. - write:(NXTypedStream *)stream;
  91. - read:(NXTypedStream *)stream;
  92.  
  93. @end
  94.  
  95. // This is stuff which the target may wish to implement.  The Animator class
  96. // checks to see that the target can run them before calling it.
  97. @interface AnimatorTarget:Object
  98. {
  99. }
  100.  
  101. - setAnimator:sender;
  102.  
  103. @end
  104.